package com.heima.test07;

public class Test {
    public static void main(String[] args) {
        //定义一个长度为3的数组，存储1-3名学生信息，学号姓名各不相同

        //1.先创建一个数组用于存储学生对象
        Student[] arr = new Student[3];
        //创建3个学生对象
        Student s1 = new Student(1, "张三", 18);
        Student s2 = new Student(2, "李四", 19);
        Student s3 = new Student(3, "王五", 20);
        //3.把学生对象添加到数组中
        arr[0] = s1;
        arr[1] = s2;
        arr[2] = s3;
        //4.再次创建一个学生对象
        Student s4 = new Student(4, "赵六", 21);

        //5.判断id唯一性
        boolean flag = idOf(arr, s4.getId());
        while (true) {
            if (flag) {//重复时
                System.err.println("您想要添加的学生id重复，请重新添加");
                return;
            } else {//不重复时添加判断
                //6.添加学生对象
                //当数组满了
                int count = createNewArr(arr);
                if (count == arr.length) {//当旧数组满了的时候，创建新数组长度+1并存储添加的学生
                    Student[] newArr = new Student[arr.length + 1];
                    for (int i = 0; i < arr.length; i++) {
                        newArr[i] = arr[i];
                    }
                    newArr[count] = s4;
                    printArr(newArr);
                    return;
                } else {//当数组没满
                    arr[count] = s4;
                    printArr(arr);
                    return;
                }

            }
        }


    }

    //7.遍历数组
    public static void printArr(Student[] arr) {
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] != null) {
                System.out.println(arr[i].getId() + ", " + arr[i].getName() + " ," + arr[i].getAge());
            }
        }
    }

    //5.判断id唯一性
    public static boolean idOf(Student[] arr, int id) {
        //循环遍历每一个id，判断是否存在，存在则返回true，不存在则返回false
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] != null) {//当数组中有空的时候，不能进行运算
                if (arr[i].getId() == id) {
                    return true;
                }
            }
        }
        return false;
    }

    //计算数组有没有满
    public static int createNewArr(Student[] arr) {
        //定义count计算取满没有
        int count = 0;
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] != null) {
                count++;
            }
        }
        return count;
    }
}
